﻿<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
    <title>Reader3ds v4.0</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta content="MSHTML 6.00.2900.2963" name="GENERATOR">
    <style>
         BODY {
	        FONT-SIZE: 11px; COLOR: #222222; FONT-FAMILY: Tahoma, Verdana, arial
        }
        TD {
	        FONT-SIZE: 11px; COLOR: #222222; FONT-FAMILY: Tahoma, Verdana, arial
        }
        .bottom {
	        FONT-SIZE: 10px; COLOR: #606060
        }
        A:visited {
	        COLOR: #444444; TEXT-DECORATION: underline
        }
        A:link {
	        COLOR: #444444; TEXT-DECORATION: underline
        }
        A:hover {
	        COLOR: #111111; TEXT-DECORATION: underline
        }
        .orangeText {
	        FONT-WEIGHT: bolder; FONT-SIZE: 14px; COLOR: #ffa319; FONT-FAMILY: Arial Black, Tahoma, Verdana, arial
        }
        .contentsTitle {
	        FONT-WEIGHT: bold; FONT-SIZE: 18px; COLOR: #444444; TEXT-DECORATION: underline
        }
        .contentsText {
	        FONT-SIZE: 13px; COLOR: #222222; LINE-HEIGHT: 18px; LETTER-SPACING: 0px
        }
        .faqTitle {
	        FONT-WEIGHT: bold; FONT-SIZE: 17px; COLOR: #222222
        }
        .faqQuestion {
	        FONT-WEIGHT: bold; FONT-SIZE: 13px; COLOR: #222222
        }
        .faqAnswer {
	        FONT-SIZE: 13px; COLOR: #222222; LINE-HEIGHT: 18px
        }
        .blogTitle {
	        FONT-WEIGHT: bold; FONT-SIZE: 15px; COLOR: #ffa319; TEXT-DECORATION: none
        }
        .blogDate {
	        FONT-SIZE: 13px; COLOR: #ffa319
        }
        .blogText {
	        FONT-SIZE: 13px; COLOR: #f9f9f9; LINE-HEIGHT: 18px; LETTER-SPACING: 0px
        }
        .middleBackground {
	        BACKGROUND-COLOR: #dddddd
        }
        TD.Text {
	        FONT-SIZE: 12px; COLOR: #222222; FONT-FAMILY: Tahoma, Verdana, arial
        }
        TD.Menu {
	        FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #444444; FONT-FAMILY: Tahoma, Verdana, arial
        }
        A.Menu:link {
	        FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #444444; TEXT-DECORATION: none
        }
        A.Menu:visited {
	        FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #444444; TEXT-DECORATION: none
        }
        A.Menu:hover {
	        FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #222222; TEXT-DECORATION: underline
        }
        A.Menu:active {
	        FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #ffa319; TEXT-DECORATION: underline
        }
        .searchResult {
	        FONT-SIZE: 12px
        }
        .searchTitle {
	        FONT-SIZE: 12px
        }
        .blogTitle {
	        FONT-SIZE: 12px; COLOR: black
        }
        .searchBody {
	        FONT-SIZE: 11px
        }
        .blogBody {
	        FONT-SIZE: 11px
        }
        .searchDate {
	        FONT-SIZE: 10px
        }
        .blogDate {
	        FONT-SIZE: 10px; COLOR: black
        }   
    </style>
</head>
<body bgcolor="white" leftmargin="0" topmargin="0" rightmargin="0">
    <table id="MainTable" cellspacing="0" cellpadding="0" width="100%" border="0">
        <tbody>
            <tr>
                <td>
                    <table cellspacing="0" cellpadding="0" width="100%" border="0">
                        <tbody>
                            <tr valign="top" height="238">
                                <td width="600">
                                    <div id="ContentsPanel">
                                        <table cellspacing="20" cellpadding="0" border="0">
                                            <tbody>
                                                <tr>
                                                    <td class="contentsTitle">
                                                        Reader3ds</td>
                                                </tr>
                                                <tr>
                                                    <td class="contentsText">
                                                        <p>
                                                            Reader3ds is a class library to read model information directly from a 3ds file
                                                            and use it in a WPF application.
                                                        </p>
                                                        <ul>
                                                            <li><a href="#SupportedFeatures">Supported features</a>
                                                            <li><a href="#usage">Usage</a> </li>
                                                        </ul>
                                                        <br />
                                                        <p>
                                                            <a id="SupportedFeatures"><b><u>Supported features</u></b></a></p>
                                                        <table id="table1" cellspacing="3" cellpadding="5" bgcolor="#ffffff" border="0">
                                                            <tbody>
                                                                <tr>
                                                                    <td style="width: 8%; text-align: center">
                                                                        <strong>Support</strong></td>
                                                                    <td width="15%">
                                                                        <strong>Feature</strong></td>
                                                                    <td>
                                                                        <strong>Comments</strong></td>
                                                                </tr>
                                                                <tr>
                                                                    <td style="width: 8%" valign="top" align="middle">
                                                                        Yes</td>
                                                                    <td valign="top" width="15%">
                                                                        <strong>Mesh data</strong></td>
                                                                    <td valign="top">
                                                                        Imports all Positions, TriangleIndices, TextureCoordinates and Normals</td>
                                                                </tr>
                                                                <tr>
                                                                    <td style="width: 8%" valign="top" align="middle">
                                                                        Yes</td>
                                                                    <td valign="top" width="15%">
                                                                        Complex objects</td>
                                                                    <td valign="top">
                                                                        Complex hierarchical objects are imported correctly</td>
                                                                </tr>
                                                                <tr>
                                                                    <td style="width: 8%" valign="top" align="middle">
                                                                        Yes</td>
                                                                    <td valign="top" width="15%">
                                                                        WPF coordinate system</td>
                                                                    <td valign="top">
                                                                        3ds file uses different coordinate system than WPF. In version 4.0 all the positions
                                                                        are changed (the version 3.9.9 uses original 3ds coordinates - for compatibility
                                                                        with older Reader3ds versions)</td>
                                                                </tr>
                                                                <tr>
                                                                    <td style="width: 8%" valign="top" align="middle">
                                                                        Yes</td>
                                                                    <td valign="top" width="15%">
                                                                        <strong>Cameras</strong></td>
                                                                    <td valign="top">
                                                                        All the cameras are read and accessable through Cameras property</td>
                                                                </tr>
                                                                <tr>
                                                                    <td style="width: 8%" valign="top" align="middle">
                                                                        Yes</td>
                                                                    <td valign="top" width="15%">
                                                                        Perspective Camera</td>
                                                                    <td valign="top">
                                                                        Reads Camera's Position, LookDirection, FieldOfView, FarPlaneDistance and UpDirection
                                                                        (from CameraAngle)</td>
                                                                </tr>
                                                                <tr>
                                                                    <td style="width: 8%" valign="top" align="middle">
                                                                        Yes</td>
                                                                    <td valign="top" width="15%">
                                                                        <strong>Lights</strong></td>
                                                                    <td valign="top">
                                                                        All the lights are read. With AddDefaultLight it is possible to add new DirectionalLight
                                                                        in the direction (0,1,0) (Version 3.9.9 the direction is (0,0,1). 3ds can define
                                                                        Multiplier for light - if less than 1 than color is darkened to achieve the same
                                                                        effect; values greater than 1 are not supported.</td>
                                                                </tr>
                                                                <tr>
                                                                    <td style="width: 8%" valign="top" align="middle">
                                                                        Yes</td>
                                                                    <td valign="top" width="15%">
                                                                        Spot Light</td>
                                                                    <td valign="top">
                                                                        Reads Light's Position, Direction, Color, InnerConeAngle, OuterConeAngle.
                                                                    </td>
                                                                </tr>
                                                                <tr>
                                                                    <td style="width: 8%" valign="top" align="middle">
                                                                        Yes</td>
                                                                    <td valign="top" width="15%">
                                                                        Point Light</td>
                                                                    <td valign="top">
                                                                        Reads Light's Position, Range (if UseAttenuation is false than Range is Infinity)</td>
                                                                </tr>
                                                                <tr>
                                                                    <td style="width: 8%" valign="top" align="middle">
                                                                        No</td>
                                                                    <td valign="top" width="15%">
                                                                        Shadows</td>
                                                                    <td valign="top">
                                                                        Not supported</td>
                                                                </tr>
                                                                <tr>
                                                                    <td style="width: 8%" valign="top" align="middle">
                                                                        Yes</td>
                                                                    <td valign="top" width="15%">
                                                                        <strong>Materials</strong></td>
                                                                    <td valign="top">
                                                                        All materials are read and assigned to the correct meshes. Because in 3ds it is
                                                                        possible to set multi-sub materials - each face (TriangleIndice) can have different
                                                                        material. This is not supported in WPF. To achieve this the meshes are divided into
                                                                        smaller ones for each material.</td>
                                                                </tr>
                                                                <tr>
                                                                    <td style="width: 8%" valign="top" align="middle">
                                                                        Yes</td>
                                                                    <td valign="top" width="15%">
                                                                        DiffuseMaterial</td>
                                                                    <td valign="top">
                                                                        Reads material Color and Opacity. TwoSided materials are also supported (BackMaterial
                                                                        is the same as Material)</td>
                                                                </tr>
                                                                <tr>
                                                                    <td style="width: 8%" valign="top" align="middle">
                                                                        Yes</td>
                                                                    <td valign="top" width="15%">
                                                                        Specular Material</td>
                                                                    <td valign="top">
                                                                        Reads material Color, Opacity and Power. Glossiness is not supported in WPF.</td>
                                                                </tr>
                                                                <tr>
                                                                    <td style="width: 8%" valign="top" align="middle">
                                                                        Yes</td>
                                                                    <td valign="top" width="15%">
                                                                        Textures</td>
                                                                    <td valign="top">
                                                                        Textured are supported in jpg, png, gif and bmp file formats. Because there are
                                                                        some 3ds models that uses tga or some other file format for textures (WPF does not
                                                                        support tga) I added check if there exist the same file in gif format and if it
                                                                        exist this file is used. For example if you have a 3ds file with textures in tga
                                                                        file format, just convert all the tga files into gif files and palce then into the
                                                                        same folder. The new gif files will be used. For each texture image UScale, VScale,
                                                                        UOffset and VOffset are read.</td>
                                                                </tr>
                                                                <tr>
                                                                    <td style="width: 8%" valign="top" align="middle">
                                                                        Yes</td>
                                                                    <td valign="top" width="15%">
                                                                        TextureCoordinates</td>
                                                                    <td valign="top">
                                                                        That means UV mapped textures will be shown correctly in WPF.</td>
                                                                </tr>
                                                                <tr>
                                                                    <td style="width: 8%" valign="top" align="middle">
                                                                        Yes</td>
                                                                    <td valign="top" width="15%">
                                                                        <strong>Animation</strong></td>
                                                                    <td valign="top">
                                                                        Data for simple animation is imported</td>
                                                                </tr>
                                                                <tr>
                                                                    <td style="width: 8%" valign="top" align="middle">
                                                                        Yes</td>
                                                                    <td valign="top" width="15%">
                                                                        Translation, Scale, Rotation Keyframes</td>
                                                                    <td valign="top">
                                                                        Keyframes for Translation, Scale and Rotation are imported. The linear interpolation
                                                                        is used to calculate the data between frames (the bias, tension and other properties
                                                                        are currently not used). Be carefull with rotation - becuase a simple interporaltion
                                                                        is used changes of rotation axis are currently not supported.</td>
                                                                </tr>
                                                                <tr>
                                                                    <td style="width: 8%" valign="top" align="middle">
                                                                        No</td>
                                                                    <td valign="top" width="15%">
                                                                        Morhing Keyframes</td>
                                                                    <td valign="top">
                                                                        Keyframes for object position changes is not supported.</td>
                                                                </tr>
                                                                <tr>
                                                                    <td style="width: 8%" valign="top" align="middle">
                                                                        No</td>
                                                                    <td valign="top" width="15%">
                                                                        Camera Keyframes</td>
                                                                    <td valign="top">
                                                                        Animation of camera is not supported - walk around is to make the camera fixed and
                                                                        change the object position accordingly.</td>
                                                                </tr>
                                                                <tr>
                                                                    <td style="width: 8%" valign="top" align="middle">
                                                                        No</td>
                                                                    <td valign="top" width="15%">
                                                                        Lights Keyframes</td>
                                                                    <td valign="top">
                                                                        Light animation is not supported.</td>
                                                                </tr>
                                                                <tr>
                                                                    <td style="width: 8%" valign="top" align="middle">
                                                                        Yes</td>
                                                                    <td valign="top" width="15%">
                                                                        <strong>Special Settings</strong></td>
                                                                    <td valign="top">
                                                                        In Reader3ds it is possible to apply some special setting to read 3ds file and to
                                                                        apply some effects to the read mesh.</td>
                                                                </tr>
                                                                <tr>
                                                                    <td style="width: 8%" valign="top" align="middle">
                                                                        Yes</td>
                                                                    <td valign="top" width="15%">
                                                                        Disable specular materials</td>
                                                                    <td valign="top">
                                                                        Because WPF does not support Glossiness the imported objects that use SpecularMaterials
                                                                        sometimes does not look as expected (too big specular effect). In this case it is
                                                                        handy to disable SpecularMaterials in the scene.</td>
                                                                </tr>
                                                                <tr>
                                                                    <td style="width: 8%; height: 48px" valign="top" align="middle">
                                                                        Yes</td>
                                                                    <td style="height: 48px" valign="top" width="15%">
                                                                        Force two sided materials</td>
                                                                    <td style="height: 48px" valign="top">
                                                                        Sometimes the read 3ds model does not have correctly set normals so some holes are
                                                                        shown in the rendered model. In this case it is useful to force that all material
                                                                        are two sided - in WPF's terminology that means that all the GeometryModel3D also
                                                                        have BackMaterial the same as Material.</td>
                                                                </tr>
                                                                <tr>
                                                                    <td style="width: 8%" valign="top" align="middle">
                                                                        Yes</td>
                                                                    <td valign="top" width="15%">
                                                                        Disable transparencies<br>
                                                                    </td>
                                                                    <td valign="top">
                                                                        Sometimes transparencies in WPF are not rendered correctly. It is possible to disable
                                                                        them.</td>
                                                                </tr>
                                                            </tbody>
                                                        </table>
                                                        <br />
                                                        <p>
                                                            <a id="usage"><b><u>Usage</u></b></a></p>
                                                        <p>
                                                            Reader3ds can be used simply with its static Read method or with advanced options
                                                            when used with an instance of Reader3ds class.
                                                        </p>
                                                        <p>
                                                            <strong>Simple use</strong></p>
                                                        <p>
                                                            Reader3ds contains&nbsp;3 static methods:</p>
                                                        <p>
                                                            <font face="Courier New">public static Model3DGroup Read(string fileName, Viewport3D
                                                                viewport, int cameraIndex)
                                                                <br />
                                                                public static Model3DGroup Read(string fileName, Viewport3D viewport)
                                                                <br />
                                                                public static Model3DGroup Read(string fileName)<br />
                                                                <br />
                                                            </font>The simplest use of Reader3ds is:
                                                        </p>
                                                        <p>
                                                            <font face="Courier New">Reader3ds.Read("sample_scene.3ds", myViewport);</font>
                                                        </p>
                                                        <p>
                                                            This reads the sample_scene.3ds from the application folder and imports all the
                                                            models, its materials and&nbsp;all the lights and adds them to myViewport. If there
                                                            are any cameras defined in simple_scene.3ds the first camera is assigned to myViewport.
                                                            myViewport can be defined in code:</p>
                                                        <p>
                                                            <font face="Courier New">Viewport3D myViewport = new Viewport3D();<br />
                                                                dockPanel1.Children.Add(myViewport);</font><br />
                                                            <br />
                                                            or in XAML:</p>
                                                        <p>
                                                            <font face="Courier New">&lt;Viewport3D Name="myViewport"&gt;<br />
                                                                &lt;/Viewport3D&gt;<br />
                                                            </font>
                                                            <br />
                                                            It is also possible to set the cameraIndex (the first Read method) where you can
                                                            specify which camera from 3ds file will be applied to&nbsp;the Viewport3D. If you
                                                            set -1 to cameraIndex the camera will not be imported - useful when you do not want
                                                            to overwrite the camera defined in Viewport3D.</p>
                                                        <p>
                                                            All the methods are returning the Model3DGroup object that contains all the read
                                                            3d objects and lights.</p>
                                                        <p>
                                                            <strong>Animation</strong></p>
                                                        <p>
                                                            The new version of Reader3ds can also read the animation data from a 3ds file. It
                                                            is possible to get the Model3DGroup object for each frame. First you have to create
                                                            a new instance of Reader3ds, read the file and than you can use the GetFrame method:</p>
                                                        <p>
                                                            <span style="font-family: Courier New">Reader3ds newReader3ds;</span><br>
                                                            <span style="font-family: Courier New">newReader3ds = new Reader3ds();<br>
                                                                newReader3ds.ReadFile("c:\\models\\simple_animation.3ds");<br />
                                                                <br />
                                                                for (int frameNo=0; frameNo&lt;newReader3ds.FramesCount; frameNo++)<br />
                                                                {</span><span style="font-family: Courier New"><br />
                                                                    &nbsp; &nbsp; newReader3ds.GetFrame(frameNo, Viewport1);<br />
                                                                </span><span style="font-family: Courier New">&nbsp; &nbsp; System.Threading.Thread.Sleep(250);
                                                                    // 4 frames per second<br />
                                                                </span><span style="font-family: Courier New">}</span><br>
                                                        </p>
                                                        <p>
                                                            <span>GetFrame method has three overloaded versions:</span></p>
                                                        <p>
                                                            <span><span style="font-family: Courier New">public Model3DGroup GetFrame(int frameNo)</span><br>
                                                            </span><span style="font-family: Courier New">public Model3DGroup GetFrame(int frameNo,
                                                                Viewport3D viewport)
                                                                <br />
                                                            </span><span style="font-family: Courier New">public Model3DGroup GetFrame(int frameNo,
                                                                Viewport3D viewport, int cameraIndex) </span>
                                                            <br>
                                                            <br />
                                                            The usage is the same as for ReadFile method. In the last version you can also specify
                                                            which camera will be used.</p>
                                                        <p>
                                                            <strong>Note</strong>: Do not expect too much from this version - currently only
                                                            simple animations are supported. Camera and light animation is not supported (you
                                                            can move the object instead). Also only simple linear interpolation is used to calculate
                                                            the data between key frames. Be careful with rotation - because angle interpolation
                                                            is used changes of rotation axis is not supported.</p>
                                                        <p>
                                                            <br>
                                                            <strong>Advanced use</strong>
                                                        </p>
                                                        <p>
                                                            For advanced use of Reader3ds an instance of Reader3ds class must be created. In
                                                            this case it is possible to set all the public properties and when the file is read
                                                            also get the additional information that is not contained in Model3DGroup. The following
                                                            code uses most of the properties of Reader3ds:
                                                        </p>
                                                        <p>
                                                            <span style="font-family: Courier New">Reader3ds newReader3ds;<br>
                                                                DiffuseMaterial defaultMaterial;<br>
                                                                Model3DGroup buttonModel3DGroup;<br>
                                                                Camera defaultCamera;<br>
                                                                <br>
                                                                defaultMaterial = new DiffuseMaterial(new SolidColorBrush(Colors.Green));<br>
                                                                <br>
                                                                newReader3ds = new Reader3ds();<br>
                                                                newReader3ds.AddDefaultLight = false;<br>
                                                                newReader3ds.ImportSpecularMaterial = false;<br>
                                                                newReader3ds.DefaultMaterial = defaultMaterial;<br>
                                                                newReader3ds.TexturesPath = "c:\\textures";<br>
                                                                newReader3ds.ThrowMissingTextureException = false;<br>
                                                                newReader3ds.MissingTextureFileName = "c:\\textures\\no_texture.gif";<br>
                                                                <br>
                                                                buttonModel3DGroup = newReader3ds.ReadFile("c:\\models\\button.3ds");<br>
                                                                <br>
                                                                defaultCamera = newReader3ds.Cameras[0]; </span>
                                                        </p>
                                                        <p>
                                                            The following properties are set before reading button.3ds file:
                                                        </p>
                                                        <p>
                                                            <strong>AddDefaultLight (bool) </strong>
                                                            <br>
                                                            It is quite common that 3ds file contains only 3d objects without any light defined.
                                                            In this case you can set this property to true and a default light will be added
                                                            to the Model3DGroup. The default light is simple DirectionalLight with direction
                                                            (0, 1, 0) white color.
                                                        </p>
                                                        <p>
                                                            <strong>DefaultMaterial (Material) </strong>
                                                            <br>
                                                            This property is similar to the previous. It is used when the 3d objects does not
                                                            have any material set. If it is not set the silver colored SolidColorBrush is used.
                                                        </p>
                                                        <p>
                                                            <strong>TexturesPath (string)
                                                                <br>
                                                            </strong>With this property it is possible to put the image files used in textures
                                                            into separate directory.&nbsp;</p>
                                                        <p>
                                                            <strong>ImportCameras, ImportLights, ImportSpecularMaterial (all bool)</strong><br>
                                                            These propertes are use to&nbsp;prevent (setting to false) importing Cameras / Lights
                                                            / SpecularMaterial.&nbsp;This can be useful if you&nbsp;want to define your own
                                                            camera or lights and do not want to use&nbsp;them from 3ds file.&nbsp;With setting
                                                            ImportSpecularMaterial to false&nbsp;SpecularMaterial is not used - only a DiffuseMaterial
                                                            is used. Because in WPF it is possible to define only SpecularPower (in 3ds file
                                                            there is also SpecularSize) the shines effect can be sometimes&nbsp;too strong -
                                                            in this cases it is better not to use SpecularMaterial.
                                                        </p>
                                                        <p>
                                                            <strong>ForceTwoSidedMaterials (bool)</strong>&nbsp;&nbsp;<br>
                                                            If true than all the GeometryModels have both Material and BackMaterial set. This
                                                            means that all the TriangleIndices can be visible from both sides.
                                                        </p>
                                                        <p>
                                                            <strong>DisableTransparencies (bool)</strong>&nbsp;&nbsp;<br>
                                                            If true transparent materials are not used. All transparent materials are made non-transparent
                                                            - Opacity is set to 1. This can be useful because WPF sometimes does not render
                                                            the transparent objects correctly. If you have problems with transparent objest
                                                            I recommend that you try to put all the transparent objects to be the last objects
                                                            in the 3ds file so the transparent objects will be rendered last. If this does not
                                                            work set this propety to true.
                                                        </p>
                                                        <p>
                                                            <strong>ThrowMissingTextureException (bool)<br>
                                                            </strong>This property can be used in a viewer application when an exception must
                                                            be shown if the texture file is not found. The exception is of type MissingTextureException
                                                            that has the MissingTextureFileName property with missing file name. The following
                                                            code is a sample of using ThrowMissingTextureException (the same code can also be
                                                            found in my Viewer3d):</p>
                                                        <p>
                                                            <span style="font-family: Courier New">Reader3ds newReader3ds;<br>
                                                                Model3DGroup buttonModel3DGroup;<br>
                                                                <br>
                                                                newReader3ds = new Reader3ds();<br>
                                                                newReader3ds.ThrowMissingTextureException = true;<br>
                                                                <br>
                                                                try<br>
                                                                {<br>
                                                                &nbsp;&nbsp;&nbsp;&nbsp;buttonModel3DGroup = newReader3ds.ReadFile("c:\\models\\button.3ds");<br>
                                                                }<br>
                                                                catch (Reader3ds.MissingTextureException e)<br>
                                                                {<br>
                                                                &nbsp;&nbsp;&nbsp;&nbsp;MessageBox.Show("Missing texture: " + e.MissingTextureFileName);<br>
                                                                &nbsp;&nbsp;&nbsp;&nbsp;newReader3ds.ThrowMissingTextureException = false;<br>
                                                                &nbsp;&nbsp;&nbsp;&nbsp;buttonModel3DGroup = newReader3ds.ReadFile("c:\\models\\button.3ds");<br>
                                                                }</span></p>
                                                        <p>
                                                            The first time the Reader3ds is used the ThrowMissingTextureException is set to
                                                            true. If the 3ds file has a missing texture the MissingTextureException is caught
                                                            in catch. The missing file name is read and user can be informed about it. Then
                                                            the ThrowMissingTextureException is set to false and the file is read again. This
                                                            time the exception is not thrown and the model can be read.
                                                        </p>
                                                        <p>
                                                            Materials with textures have its Brush property set to the ImageBrush. But if the
                                                            texture is not found a SolidColorBrush is used instead.
                                                        </p>
                                                        <p>
                                                            <strong>MissingTextureFileName </strong>
                                                            <br>
                                                            With this property&nbsp;a custom texture can be used&nbsp;instead of the missing
                                                            one – for example a big red X.
                                                        </p>
                                                        <p>
                                                            &nbsp;</p>
                                                        <p>
                                                            The following properties can be used after reading the 3ds file:</p>
                                                        <p>
                                                            <strong>Cameras (List&lt;Camera&gt;)<br>
                                                            </strong>This collection contains all the read Cameras.</p>
                                                        <p>
                                                            <strong>FramesCount (int)</strong>&nbsp;&nbsp;<br>
                                                            Number of frames in the read 3ds file. If 1 than the 3ds file does not have animation.
                                                        </p>
                                                        <p>
                                                            <strong>NamedObjects (Dictionary&lt;string, object&gt;)</strong>&nbsp;&nbsp;<br>
                                                            This dictionary contains object names as keys and their corresponding GeometryModel3D
                                                            as values. So if you wish to change the specific object, its material or add a custom
                                                            transformation you can access the GeometryModel3D with its name that is defined
                                                            in 3D modeling application.<br />
                                                            <br />
                                                            <span style="font-family: Courier New">GeometryModel3D objectHead = humanReader3ds.NamedObjects["Head"]
                                                                as GeometryModel3D;<br />
                                                            </span>
                                                            <br />
                                                            Note: If the object has been split because multiple materials are used for one mesh
                                                            object, new objects have been added and can be accessed with the key: [original_object_name]_[material_name]
                                                            - for example: "head" object can be split into: "head_material1", "head_material2".
                                                        </p>
                                                        <p>
                                                            <br />
                                                            <strong>Note:</strong><br />
                                                            Because Reader3ds is in a beta phase this version <strong>expires on 1st Juni 2007</strong>.
                                                            The previous version 3.9 will expire on 18th January 2007.<br />
                                                            <br />
                                                            If you would like to get a commercial license or get a version without expiration
                                                            please contact me on <a href="mailto:abenedik@gmail.com"><span style="color: #0000ff">
                                                                abenedik@gmail.com</span></a>.<br />
                                                            <br />
                                                            If you find any bug or would like to have some special functionality plese let me
                                                            know. I will do my best to fix the problems or add the desired functionality. This
                                                            is also a way to get a free commercial version.</p>
                                                           <br />
                                                           <br />
                                                           <p>Subscribe to <a href="http://www.wpf-graphics.com/rss.xml">RSS feed</a> to be informed about new content on the <a href="http://www.wpf-graphics.com">www.wpf-graphics.com</a> site.</p>
                                                    </td>
                                                </tr>
                                            </tbody>
                                        </table>
                                    </div>
                                </td>
                                <td width="*">
                                    &nbsp;</td>
                            </tr>
                        </tbody>
                    </table>
                </td>
            </tr>
            <tr>
                <td>
                    <table cellspacing="0" cellpadding="0" width="100%" bgcolor="#dddddd" border="0">
                        <tbody>
                            <tr>
                                <td width="20">
                                    <img height="1" src="Reader3ds_files/spacer.gif" width="20"></td>
                                <td class="bottom" valign="top" width="100%">
                                    Copyright © 2006 by <a href="mailto:abenedik@gmail.com">Andrej Benedik</a>. All
                                    Rights Reserved.</td>
                            </tr>
                        </tbody>
                    </table>
                </td>
            </tr>
        </tbody>
    </table>
</body>
</html>
